MFC (Microsoft Foundation Classes) তে OnPaint এবং OnDraw হল গ্রাফিক্যাল কন্ট্রোল বা কাস্টম ড্রয়িং ইন্টারফেস তৈরি করতে ব্যবহৃত দুটি গুরুত্বপূর্ণ মেথড। এগুলি ডায়ালগ, উইন্ডো বা কাস্টম কন্ট্রোলের মধ্যে গ্রাফিক্যাল কন্টেন্ট যেমন ছবি, লাইন, রেকট্যাঙ্গেল, টেক্সট ইত্যাদি অঙ্কন করতে ব্যবহৃত হয়।
OnPaint মেথড
OnPaint হল একটি উইন্ডো মেসেজ হ্যান্ডলার, যা উইন্ডো বা ডায়ালগ রিফ্রেশ হওয়ার সময় বা যখন উইন্ডো পুনরায় দৃশ্যমান হয় তখন কল হয়। যখন উইন্ডোর কন্টেন্ট পুনরায় রেন্ডার করতে হয় (যেমন, যখন উইন্ডো সাইজ পরিবর্তিত হয় বা উইন্ডোটি সর্বত্র দেখা যায়), তখন এই মেথডটি কল হয়।
OnPaint মেথড ব্যবহার করে গ্রাফিক্স ড্র করা হয়, বিশেষ করে CDC (Device Context) অবজেক্ট ব্যবহার করে, যা আপনাকে পেইন্টিংয়ের জন্য গ্রাফিক্যাল ডিভাইসের সাথে যোগাযোগ করতে দেয়।
OnPaint মেথডের ব্যবহার
- CDC Object: ড্রইংয়ের জন্য, প্রথমে একটি CDC অবজেক্ট তৈরি করতে হয় যা গ্রাফিক্স রেন্ডার করতে সাহায্য করে।
- CPaintDC Object: MFC তে CPaintDC ক্লাসটি CDC থেকে ইনহেরিট করা হয় এবং এটি পেইন্টিং কানভাসের জন্য ব্যবহৃত হয়।
Code Example:
void CMainFrame::OnPaint()
{
CPaintDC dc(this); // device context for painting
// Set the pen color
CPen pen(PS_SOLID, 1, RGB(255, 0, 0)); // Red pen
dc.SelectObject(&pen);
// Draw a line from (10, 10) to (200, 200)
dc.MoveTo(10, 10);
dc.LineTo(200, 200);
// Draw text
dc.TextOut(50, 50, _T("Hello, MFC!"));
}
এই উদাহরণে, OnPaint মেথডে CPaintDC ব্যবহার করা হয়েছে, যা পেইন্টিং প্রসেসের জন্য ডিভাইস কন্টেক্সট তৈরি করে। তারপর একটি লাল রঙের CPen ব্যবহার করে একটি লাইন এবং টেক্সট ড্র করা হয়েছে।
OnDraw মেথড
OnDraw মেথডটি সাধারণত CView ক্লাসের মধ্যে ব্যবহৃত হয় এবং এটি একটি কাস্টম ড্রয়িং রুটিন হিসেবে কাজ করে। যদি আপনি একটি কাস্টম ভিউ তৈরি করেন (যেমন CFormView বা CListView), তবে আপনি OnDraw মেথডটি পুনঃসংজ্ঞায়িত (override) করতে পারেন, যাতে আপনি পেইন্টিং লজিক যোগ করতে পারেন।
OnDraw মেথডটি CDC অবজেক্ট ব্যবহার করে গ্রাফিক্স রেন্ডার করতে সহায়তা করে, তবে এটি সাধারণত CView অবজেক্টের জন্য ব্যবহৃত হয়, যেখানে ড্রয়িং প্রয়োজন হয়।
OnDraw মেথডের ব্যবহার
OnDraw মেথডে গ্রাফিক্স ড্র করার জন্য, একটি CDC অবজেক্ট ব্যবহার করা হয়, কিন্তু এই ক্ষেত্রে এটি CView বা তার subclass এর জন্য কাজ করে।
Code Example:
void CMyView::OnDraw(CDC* pDC)
{
// Draw a rectangle
CRect rect(50, 50, 200, 200);
pDC->Rectangle(rect);
// Set font and draw text
CFont font;
font.CreatePointFont(120, _T("Arial"));
CFont* pOldFont = pDC->SelectObject(&font);
pDC->TextOut(60, 60, _T("Drawing in CView"));
// Restore old font
pDC->SelectObject(pOldFont);
}
এখানে OnDraw মেথডের মধ্যে CDC প্যারামিটার হিসেবে পাস করা হয়, যা পেইন্টিং প্রসেসের জন্য ব্যবহার করা হয়। এই উদাহরণে একটি রেকট্যাঙ্গেল এবং টেক্সট ড্র করা হয়েছে, এবং একটি কাস্টম ফন্ট ব্যবহার করা হয়েছে।
OnPaint এবং OnDraw এর মধ্যে পার্থক্য
- OnPaint: এটি সাধারণত উইন্ডোর বা ডায়ালগের ডিফল্ট পেইন্টিং লজিক এবং কাস্টম পেইন্টিং রেন্ডার করার জন্য ব্যবহৃত হয়। এটি উইন্ডো রিফ্রেশের সময় স্বয়ংক্রিয়ভাবে কল হয়।
- OnDraw: এটি কাস্টম ভিউ ক্লাসের জন্য ব্যবহৃত হয় এবং ম্যানুয়ালি ড্রিং লজিক প্রোগ্রাম করা হয়। এটি সাধারণত CView বা এর subclass-এ ব্যবহৃত হয়, যেখানে CDC প্যারামিটার দিয়ে পেইন্টিং করা হয়।
সারাংশ
OnPaint এবং OnDraw মেথড MFC তে গ্রাফিক্স রেন্ডার করার জন্য গুরুত্বপূর্ণ টুল। OnPaint মেথড সাধারণত উইন্ডোর রিফ্রেশ এবং কাস্টম ড্রয়িংয়ের জন্য ব্যবহৃত হয়, যেখানে OnDraw মেথড কাস্টম ভিউগুলোর জন্য ব্যবহৃত হয় এবং এটি একটি কাস্টম ড্রয়িং রুটিন হিসেবে কাজ করে। উভয় মেথডই CDC অবজেক্ট ব্যবহার করে গ্রাফিক্স অঙ্কন করতে সহায়তা করে।
Read more